﻿using Modelos;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ToquesDeDarsena.Controllers
{
    public class ToquesController : Controller
    {
        //
        // GET: /Toques/

        private DataContextGeneral DataContext = new DataContextGeneral(); 
        
        public ActionResult Index()
        {
            return View(model: DataContext.Toques.ToList());
        }

        [HttpGet]
        public ActionResult Agregar()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Agregar(ValidarToque validarToque)
        {
            if (ModelState.IsValid)
            {
                var nuevoToque = new Toque();

                var laEmpresa = DataContext.Empresas.Where(e => e.Codigo == validarToque.codigoEmpresa).SingleOrDefault();
                var laLocalidad = DataContext.Localidades.Where(l => l.Codigo == validarToque.codigoLocalidad).SingleOrDefault();

                nuevoToque.FechaYHoraToque = DateTime.Now;

                nuevoToque.Empresa = laEmpresa;
                nuevoToque.Localidad = laLocalidad;

                nuevoToque.Interno = validarToque.Interno;
                nuevoToque.Darsena = validarToque.Darsena;

                DataContext.Toques.Add(nuevoToque);

                DataContext.SaveChanges();
                return RedirectToAction("Index", "Toques");
            }

            return View();
            
        }

        public ActionResult ConsultarEmpresa(int codigoEmpresa)
        {
            Empresa laEmpresa = DataContext.Empresas.Find(codigoEmpresa);
            return Json(laEmpresa, JsonRequestBehavior.AllowGet);      
        }

        public ActionResult ConsultarLocalidad(int codigoLocalidad)
        {
            Localidad laLocalidad = DataContext.Localidades.Find(codigoLocalidad);
            return Json(laLocalidad, JsonRequestBehavior.AllowGet);
        }

        public class ValidarToque
        {
            public int id { get; set; }

            [Required(ErrorMessage = "Debe Ingresar un Codigo de Empresa Valido")]
            [Range(1,30000)]
            public int codigoEmpresa { get; set; }

            [Required(ErrorMessage = "Debe Ingresar un Codigo de Localidad Valido")]
            [Range(1,30000)]
            public int codigoLocalidad { get; set; }

            [Required(ErrorMessage = "Debe Ingresar un Numero de Interno Valido")]
            [Range(1, 30000)]
            public int Interno { get; set; }

            public int Darsena { get; set; }

            public DateTime FechaYHoraToque { get; set; }

        }
        
    }
}
